﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoData;
using Entidades;
using Logica.Comandos.Lugar;
using Logica.Interfaces;

namespace Logica.Comandos.Cliente
{
    public class ComandoAgregarCliente: Comando, IAgregable
    {
        private List<Comando> _comandos;

        #region Constructor

        public ComandoAgregarCliente()
        {
            _comandos = new List<Comando>();
            _comandos.Add(FComandos.ComandoLugar().Agregar());
        }
        
        #endregion
        #region Overrides of Comando

        public override void Ejecutar()
        {
            throw new NotImplementedException();
        }

        #endregion

        #region Implementation of IAgregable

        public int Ejecutar(Aseguradora aseguradora)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Inspeccion inspeccion, Aseguradora aseguradora)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Lugar lugar)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Personal personal)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Poliza poliza)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Recaudo recaudo)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(RecaudoInspeccion recaudoInspeccion)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Ramo ramo)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidad recaudo, Entidad ramo)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(DetalleEstimado detalle)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Siniestro siniestro)
        {
            throw new NotImplementedException();
        }

        public int Ejecutar(Entidades.Sucursal sucursal)
        {
            throw new NotImplementedException();
        }

        #endregion
        
        /// <summary>
        /// Agrega Un cliente en la base de datos
        /// </summary>
        /// <param name="cliente"></param>
        /// <returns></returns>
        public int Ejecutar(Entidades.Cliente cliente)
        {
            try
            {
                cliente.Lugar.Id = ((ComandoCrearLugar) _comandos[0]).Ejecutar(cliente.Lugar);
                return DAO.ObtenerFabrica(1).ObtenerDaoCliente().AgregarCliente(cliente);
            }
            catch (Exception)
            {
                return -1;
            }
        }
    }
}
